## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.0.4
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
## Registered S3 methods overwritten by 'dlookr':
## method from
## plot.transform scales
## print.transform scales
##
## Attaching package: 'dlookr'
##
## The following object is masked from 'package:tidyr':
##
## extract
##
## The following object is masked from 'package:base':
##
## transform
##
## Attaching package: 'summarytools'
##
## The following object is masked from 'package:tibble':
##
## view
##
## Attaching package: 'data.table'
##
## The following objects are masked from 'package:lubridate':
##
## hour, isoweek, mday, minute, month, quarter, second, wday, week,
## yday, year
##
## The following objects are masked from 'package:dplyr':
##
## between, first, last
##
## The following object is masked from 'package:purrr':
##
## transpose
## corrplot 0.95 loaded
library(rcompanion)
library(dplyr)
library(stringr)
library(lubridate)
library(ggplot2)
library(naniar)
library(simputation)##
## Attaching package: 'simputation'
##
## The following object is masked from 'package:naniar':
##
## impute_median
##
## Attaching package: 'mice'
##
## The following object is masked from 'package:stats':
##
## filter
##
## The following objects are masked from 'package:base':
##
## cbind, rbind
## Registered S3 method overwritten by 'GGally':
## method from
## +.gg ggplot2
## tcltk
## TRUE
## Rows: 32245 Columns: 13
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (3): cidade, uf, mes_ano
## dbl (10): mes, ano, n_usuarios_internet, velocidade_media_mbps, n_dispositiv...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
A base de dados utilizada neste projeto foi elaborada de forma simulada com apoio do assistente ChatGPT, para fins acadêmicos e didáticos. Seu objetivo é representar a evolução de indicadores tecnológicos em cidades brasileiras ao longo do tempo, permitindo praticar a disciplina de análise exploratória e imputação de dados. Cada registro corresponde a uma observação mensal de uma cidade, contemplando variáveis relacionadas ao acesso à internet, inovação, investimentos públicos, atividade empreendedora e produção tecnológica.
O formato da base possibilita a análise de múltiplas variáveis contínuas, com destaque para o número de usuários de internet e a velocidade média da conexão. A escolha desta base foi feita pela diversidade de registros e pela presença controlada de dados faltantes, fatores importantes para o desenvolvimento do projeto.
O objetivo principal da análise é investigar o comportamento do número de usuários de internet em situações específicas onde a velocidade média ultrapassa de 50 Mbps, permitindo identificar padrões de acesso em cenários de melhor qualidade de conexão.
Fonte: Base simulada criada para fins acadêmicos com apoio de ChatGPT e adaptada pelo aluno.
O espaço amostral deste projeto é composto por registros mensais de cidades do Brasil. Cada elemento da base refere-se a um par cidade/mês, como por exemplo “São Paulo - Janeiro/2020”.
O evento aleatório considerado é a seleção de registros em que a velocidade média da internet superou 50 Mbps. O objeto de interesse é o número de usuários de internet (n_usuarios_internet) nesses casos específicos.
Cada indivíduo analisado representa uma cidade em um determinado mês, e o espaço amostral completo abrange todas as cidades disponíveis na base de dados, independentemente da ocorrência ou não do evento analisado.
## Non-numerical variable(s) ignored: cidade, uf, mes_ano
## ### Descriptive Statistics
## #### tech
## **N:** 32245
##
## | | ano | eventos_tecnologicos_realizados | indice_inovacao |
## |----------------:|---------:|--------------------------------:|----------------:|
## | **Mean** | 2011.97 | 3.00 | 0.50 |
## | **Std.Dev** | 7.21 | 1.72 | 0.29 |
## | **Min** | 2000.00 | 0.00 | 0.00 |
## | **Q1** | 2006.00 | 2.00 | 0.25 |
## | **Median** | 2012.00 | 3.00 | 0.50 |
## | **Q3** | 2018.00 | 4.00 | 0.75 |
## | **Max** | 2024.00 | 12.00 | 1.00 |
## | **MAD** | 8.90 | 1.48 | 0.37 |
## | **IQR** | 12.00 | 2.00 | 0.50 |
## | **CV** | 0.00 | 0.57 | 0.57 |
## | **Skewness** | 0.01 | 0.59 | -0.01 |
## | **SE.Skewness** | 0.01 | 0.01 | 0.01 |
## | **Kurtosis** | -1.20 | 0.38 | -1.20 |
## | **N.Valid** | 32245.00 | 32245.00 | 32245.00 |
## | **N** | 32245.00 | 32245.00 | 32245.00 |
## | **Pct.Valid** | 100.00 | 100.00 | 100.00 |
##
## Table: Table continues below
##
##
##
## | | investimento_publico_tecnologia | mes | n_dispositivos_conectados |
## |----------------:|--------------------------------:|---------:|--------------------------:|
## | **Mean** | 550480.32 | 6.50 | 55009.48 |
## | **Std.Dev** | 259932.24 | 3.45 | 25959.20 |
## | **Min** | 100004.30 | 1.00 | 10001.00 |
## | **Q1** | 324929.32 | 3.00 | 32549.00 |
## | **Median** | 551799.95 | 6.00 | 54929.00 |
## | **Q3** | 773694.49 | 9.00 | 77573.00 |
## | **Max** | 999984.69 | 12.00 | 99998.00 |
## | **MAD** | 332646.84 | 4.45 | 33371.84 |
## | **IQR** | 448765.17 | 6.00 | 45024.00 |
## | **CV** | 0.47 | 0.53 | 0.47 |
## | **Skewness** | 0.00 | 0.00 | 0.00 |
## | **SE.Skewness** | 0.01 | 0.01 | 0.01 |
## | **Kurtosis** | -1.20 | -1.22 | -1.20 |
## | **N.Valid** | 32245.00 | 32245.00 | 32245.00 |
## | **N** | 32245.00 | 32245.00 | 32245.00 |
## | **Pct.Valid** | 100.00 | 100.00 | 100.00 |
##
## Table: Table continues below
##
##
##
## | | n_usuarios_internet | patentes_registradas | startups_ativas |
## |----------------:|--------------------:|---------------------:|----------------:|
## | **Mean** | 50000.34 | 5.02 | 154.66 |
## | **Std.Dev** | 223.24 | 2.26 | 83.76 |
## | **Min** | 49090.00 | 0.00 | 10.00 |
## | **Q1** | 49849.00 | 3.00 | 82.00 |
## | **Median** | 50000.00 | 5.00 | 155.00 |
## | **Q3** | 50151.00 | 6.00 | 227.00 |
## | **Max** | 50878.00 | 15.00 | 299.00 |
## | **MAD** | 223.87 | 2.97 | 106.75 |
## | **IQR** | 302.00 | 3.00 | 145.00 |
## | **CV** | 0.00 | 0.45 | 0.54 |
## | **Skewness** | 0.00 | 0.45 | 0.00 |
## | **SE.Skewness** | 0.01 | 0.01 | 0.01 |
## | **Kurtosis** | 0.00 | 0.16 | -1.20 |
## | **N.Valid** | 32245.00 | 32245.00 | 32245.00 |
## | **N** | 32245.00 | 32245.00 | 32245.00 |
## | **Pct.Valid** | 100.00 | 100.00 | 100.00 |
##
## Table: Table continues below
##
##
##
## | | velocidade_media_mbps |
## |----------------:|----------------------:|
## | **Mean** | 50.07 |
## | **Std.Dev** | 15.01 |
## | **Min** | -16.94 |
## | **Q1** | 39.97 |
## | **Median** | 50.09 |
## | **Q3** | 60.17 |
## | **Max** | 107.45 |
## | **MAD** | 14.97 |
## | **IQR** | 20.20 |
## | **CV** | 0.30 |
## | **Skewness** | 0.01 |
## | **SE.Skewness** | 0.01 |
## | **Kurtosis** | -0.03 |
## | **N.Valid** | 31278.00 |
## | **N** | 32245.00 |
## | **Pct.Valid** | 97.00 |
## cidade uf mes ano
## Length:32245 Length:32245 Min. : 1.0 Min. :2000
## Class :character Class :character 1st Qu.: 3.0 1st Qu.:2006
## Mode :character Mode :character Median : 6.0 Median :2012
## Mean : 6.5 Mean :2012
## 3rd Qu.: 9.0 3rd Qu.:2018
## Max. :12.0 Max. :2024
##
## mes_ano n_usuarios_internet velocidade_media_mbps
## Length:32245 Min. :49090 Min. :-16.94
## Class :character 1st Qu.:49849 1st Qu.: 39.97
## Mode :character Median :50000 Median : 50.09
## Mean :50000 Mean : 50.07
## 3rd Qu.:50151 3rd Qu.: 60.17
## Max. :50878 Max. :107.45
## NA's :967
## n_dispositivos_conectados indice_inovacao investimento_publico_tecnologia
## Min. :10001 Min. :0.0000 Min. :100004
## 1st Qu.:32549 1st Qu.:0.2540 1st Qu.:324929
## Median :54929 Median :0.5040 Median :551800
## Mean :55009 Mean :0.5035 Mean :550480
## 3rd Qu.:77573 3rd Qu.:0.7530 3rd Qu.:773694
## Max. :99998 Max. :1.0000 Max. :999985
##
## eventos_tecnologicos_realizados startups_ativas patentes_registradas
## Min. : 0.000 Min. : 10.0 Min. : 0.000
## 1st Qu.: 2.000 1st Qu.: 82.0 1st Qu.: 3.000
## Median : 3.000 Median :155.0 Median : 5.000
## Mean : 3.004 Mean :154.7 Mean : 5.019
## 3rd Qu.: 4.000 3rd Qu.:227.0 3rd Qu.: 6.000
## Max. :12.000 Max. :299.0 Max. :15.000
##
## [1] 10
Após a aplicação da função descr() do pacote summarytools, foi possível obter uma descrição estatística detalhada das variáveis numéricas da base de dados. Observou-se que a velocidade média da internet nas cidades analisadas apresenta uma média de aproximadamente 50,09 Mbps, com um desvio padrão de 14,98 Mbps, indicando uma variação moderada entre as cidades. A mediana foi de 50,10 Mbps, valor próximo da média, sugerindo uma distribuição relativamente simétrica, confirmada pelo valor de Skewness próximo de zero. Em relação ao número de usuários de internet, ele mostra que a base é extremamente estável, com baixa variação entre cidades/meses. A média foi de aproximadamente 50.000 usuários, com pequena variação (desvio padrão de cerca de 223 usuários). De maneira geral, a base apresenta uma quantidade elevada de registros válidos para todas as variáveis, com mais de 96,97% dos dados completos em cada variável analisada.
As variáveis n_usuarios_internet e velocidade_media_mbps são bastante diferentes em comportamento: a primeira é muito estável, a segunda muito dispersa. A variável velocidade_media_mbps é a que tem alguns dados faltantes.
tech_filter <- tech %>%
select(cidade, mes, ano, n_usuarios_internet, velocidade_media_mbps,
n_dispositivos_conectados, investimento_publico_tecnologia) %>%
mutate(mes_ano = as.Date(paste(ano, mes, "01", sep = "-"))) %>%
filter(ano %in% 2019:2022) %>%
distinct(cidade, mes_ano, .keep_all = TRUE)## # A tibble: 8 × 6
## variables types missing_count missing_percent unique_count unique_rate
## <chr> <chr> <int> <dbl> <int> <dbl>
## 1 cidade char… 0 0 10 0.0208
## 2 mes nume… 0 0 12 0.025
## 3 ano nume… 0 0 4 0.00833
## 4 n_usuarios_inter… nume… 0 0 371 0.773
## 5 velocidade_media… nume… 12 2.5 439 0.915
## 6 n_dispositivos_c… nume… 0 0 478 0.996
## 7 investimento_pub… nume… 0 0 480 1
## 8 mes_ano Date 0 0 48 0.1
A base de dados filtrada foi analisada quanto à completude e tipos de variáveis. Observou-se que a estrutura da base está adequada, com todas as variáveis devidamente tipadas (caracteres, numéricas ou datas) e uma baixa ocorrência de valores faltantes. Apenas a variável velocidade_media_mbps apresentou 2,5% de valores ausentes. Dá pra tentar identificar se é totalmente aleatório ou não e tentar preencher com as técnicas específicas.
Podemos também visualizar os dados faltantes através de um gráfico de barras percentual, gerado pela biblioteca naniar e função vis_miss.
tech_filter %>% dplyr::mutate(mes_ano = as.IDate(paste("01", mes, ano, sep = "-"), format = "%d-%m-%Y")) %>% dplyr::select(cidade, mes_ano, n_usuarios_internet:investimento_publico_tecnologia) %>% naniar::vis_miss()O gráfico confirma os dados faltantes apenas na variável velocidade_media_mbps.
## # A tibble: 1 × 4
## statistic df p.value missing.patterns
## <dbl> <dbl> <dbl> <int>
## 1 1.75e-25 0 0 2
## # A tibble: 1 × 4
## statistic df p.value missing.patterns
## <dbl> <dbl> <dbl> <int>
## 1 1.75e-25 0 0 2
Quando p-value ≤ 0, rejeitamos a hipótese nula do teste de dados completamente aleatórios a qualquer nível de significância. Isso significa que os dados faltantes não são completamente aleatórios. Ou seja, os valores faltantes estão relacionados a alguma variável ou a algum padrão no seu conjunto de dados.
tech %>%
dplyr::group_by(cidade) %>% dplyr::filter(is.na(velocidade_media_mbps)) %>%
dplyr::summarise(n = n()) %>% dplyr::ungroup() %>%
dplyr::mutate(tot.miss = sum(n)) %>% dplyr::group_by(cidade) %>%
dplyr::mutate(tot.miss.regiao = sum(n), freq.intra.regiao = n/tot.miss.regiao, freq.regiao = tot.miss.regiao/tot.miss) %>% dplyr::arrange(desc(freq.regiao), desc(n)) %>% kable()| cidade | n | tot.miss | tot.miss.regiao | freq.intra.regiao | freq.regiao |
|---|---|---|---|---|---|
| Belo Horizonte | 108 | 967 | 108 | 1 | 0.1116856 |
| Rio de Janeiro | 107 | 967 | 107 | 1 | 0.1106515 |
| São Paulo | 102 | 967 | 102 | 1 | 0.1054809 |
| Salvador | 101 | 967 | 101 | 1 | 0.1044467 |
| Brasília | 100 | 967 | 100 | 1 | 0.1034126 |
| Curitiba | 98 | 967 | 98 | 1 | 0.1013444 |
| Porto Alegre | 93 | 967 | 93 | 1 | 0.0961737 |
| Fortaleza | 90 | 967 | 90 | 1 | 0.0930714 |
| Manaus | 86 | 967 | 86 | 1 | 0.0889349 |
| Recife | 82 | 967 | 82 | 1 | 0.0847983 |
A maior quantidade de dados faltantes ocorre em Belo Horizonte e Rio de Janeiro, ambos com 109 registros faltantes, representando mais ou menos 11% dos dados faltantes cada um. Logo depois vem Salvador, com 105. As três cidades do Sudeste (Rio de Janeiro, São Paulo e Belo Horizonte) concentram juntas uma parte relevante dos dados faltantes de velocidade de internet.
tech_filter_knn <- tech_filter %>%
select(cidade, mes_ano, velocidade_media_mbps) %>%
as.data.frame() %>%
simputation::impute_knn(velocidade_media_mbps ~ cidade + mes_ano, k = 5, seed = 512) %>%
dplyr::mutate(velocidade_media_mbps = as.numeric(velocidade_media_mbps))ggplot(tech_filter, aes(x = velocidade_media_mbps)) +
geom_histogram(binwidth = 5, fill = "lightblue", color = "black") +
ggtitle("Distribuição - Antes da Imputação")## Warning: Removed 12 rows containing non-finite outside the scale range
## (`stat_bin()`).
ggplot(tech_filter_knn, aes(x = velocidade_media_mbps)) +
geom_histogram(binwidth = 5, fill = "lightgreen", color = "black") +
ggtitle("Distribuição - Após Imputação knn")tech_filter <- tech_filter %>%
mutate(velocidade_media_mbps = ifelse(velocidade_media_mbps < 0, NA, velocidade_media_mbps))
tech_velocidade <- tech_filter %>%
select(velocidade_media_mbps, n_usuarios_internet)
metodos <- c("pmm", "")
tech_filter_multiplo <- mice(
tech_velocidade,
method = metodos,
m = 10,
maxit = 5,
seed = 512,
printFlag = FALSE
)
stripplot(tech_filter_multiplo, pch = c(21, 20), cex = c(1, 1.5))
## Comparando a imputação dos dados com o realizado para velocidade para
o método de imputação múltipla
dados_imputados <- complete(tech_filter_multiplo, 1)
# Gráfico antes da imputação
ggplot(tech_filter, aes(x = velocidade_media_mbps)) +
geom_histogram(binwidth = 5, fill = "lightblue", color = "black") +
ggtitle("Distribuição - Antes da Imputação")## Warning: Removed 12 rows containing non-finite outside the scale range
## (`stat_bin()`).
# Gráfico depois da imputação
ggplot(dados_imputados, aes(x = velocidade_media_mbps)) +
geom_histogram(binwidth = 5, fill = "lightgreen", color = "black") +
ggtitle("Distribuição - Após Imputação Múltipla")tech_filter <- tech_filter %>%
mutate(velocidade_media_mbps = ifelse(velocidade_media_mbps < 0, NA, velocidade_media_mbps))
tech_velocidade <- tech_filter %>%
select(velocidade_media_mbps, n_usuarios_internet)
metodos <- c("midastouch", "")
tech_filter_multiplo_midas <- mice(
tech_velocidade,
method = metodos,
m = 10,
maxit = 5,
seed = 512,
printFlag = FALSE
)
stripplot(tech_filter_multiplo_midas, pch = c(21, 20), cex = c(1, 1.5))dados_imputados_midas <- complete(tech_filter_multiplo_midas, 1)
# Gráfico antes da imputação
ggplot(tech_filter, aes(x = velocidade_media_mbps)) +
geom_histogram(binwidth = 5, fill = "lightblue", color = "black") +
ggtitle("Distribuição - Antes da Imputação")## Warning: Removed 12 rows containing non-finite outside the scale range
## (`stat_bin()`).
# Gráfico depois da imputação
ggplot(dados_imputados_midas, aes(x = velocidade_media_mbps)) +
geom_histogram(binwidth = 5, fill = "lightgreen", color = "black") +
ggtitle("Distribuição - Após Imputação Múltipla")Conclusão: a imputação múltipla usando o método PMM, na minha opinião, foi a que, por detalhes, melhor preservou o padrão original da variável velocidade, a simetria e o alcance dos dados. Ele mantém a distribuição empírica dos dados observados, sem criar valores que destoam do conjunto.
tech_velocidade_imputado <- complete(tech_filter_multiplo, 1)
tech_filter$velocidade_media_mbps <- tech_velocidade_imputado$velocidade_media_mbps
summary(tech_filter)## cidade mes ano n_usuarios_internet
## Length:480 Min. : 1.00 Min. :2019 Min. :49341
## Class :character 1st Qu.: 3.75 1st Qu.:2020 1st Qu.:49856
## Mode :character Median : 6.50 Median :2020 Median :50008
## Mean : 6.50 Mean :2020 Mean :50004
## 3rd Qu.: 9.25 3rd Qu.:2021 3rd Qu.:50147
## Max. :12.00 Max. :2022 Max. :50678
## velocidade_media_mbps n_dispositivos_conectados
## Min. : 7.27 Min. :10580
## 1st Qu.: 40.37 1st Qu.:31049
## Median : 49.80 Median :53819
## Mean : 50.13 Mean :54158
## 3rd Qu.: 60.09 3rd Qu.:76414
## Max. :102.43 Max. :99482
## investimento_publico_tecnologia mes_ano
## Min. :100847 Min. :2019-01-01
## 1st Qu.:349406 1st Qu.:2019-12-24
## Median :563938 Median :2020-12-16
## Mean :565281 Mean :2020-12-15
## 3rd Qu.:780353 3rd Qu.:2021-12-08
## Max. :999919 Max. :2022-12-01
O projeto pede para que eu: - Descreva o que é uma distribuição normal; - Crie um histograma para cada variável da sua base de dados. Justifique a escolha do número de bins para seu trabalho. (usando o pacote ggplot); - Crie um gráfico Q-Q para cada variável de sua base de dados. (use as funções presentes no pacote ggpubr); - Execute um teste de normalidade Shapiro-Wilk; - Baseado nos itens anteriores, é possível afirmar que algumas das variáveis se aproximam de uma distribuição normal? Justifique.
Respondendo o que foi solicitado: distribuição Normal é um tipo de distribuição de probabilidade contínua que é simétrica em torno da média, formando o famoso “formato de sino”. Em uma distribuição normal, a maioria dos valores está próxima da média, e valores mais extremos são cada vez mais raros. Essa distribuição é importante porque muitas análises estatísticas assumem normalidade dos dados.
O número de bins foi determinado utilizando a fórmula de Sturges, considerando o tamanho da amostra. Essa escolha visa equilibrar a representação detalhada dos dados sem gerar sobrecarga visual no histograma.
tech %>%
ggplot(aes(x = n_usuarios_internet)) +
geom_histogram(aes(y = after_stat(density)), fill = "lightblue", bins = bins_sturges) +
geom_density(color = "red", size = 1.2) +
labs(
title = "Distribuição do Número de Usuários de Internet",
x = "Número de Usuários",
y = "Densidade"
) +
theme_minimal()## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
O histograma e a curva de densidade indicam que a variável “Número de Usuários de Internet” apresenta uma distribuição aproximadamente normal, com formato simétrico e concentração de valores próximos à média. Essa análise visual reforça a avaliação de normalidade da variável para as próximas etapas do estudo.
ggplot(tech_filter, aes(x = n_dispositivos_conectados)) +
geom_histogram(bins = bins_sturges, fill = "lightgreen", color = "black") +
labs(title = "Histograma - Dispositivos Conectados", x = "Dispositivos", y = "Frequência")ggplot(tech_filter, aes(x = investimento_publico_tecnologia)) +
geom_histogram(bins = bins_sturges, fill = "lightpink", color = "black") +
labs(title = "Histograma - Investimento Público em Tecnologia", x = "Investimento", y = "Frequência")ggplot(tech_filter, aes(x = velocidade_media_mbps)) +
geom_histogram(bins = bins_sturges, fill = "lightyellow", color = "black") +
labs(title = "Histograma - Velocidade Média (Mbps)", x = "Velocidade (Mbps)", y = "Frequência")Número de Usuários de Internet: Apresenta distribuição aproximadamente simétrica, com formato semelhante a uma curva normal.
Número de Dispositivos Conectados: Apresenta distribuição irregular e dispersa, sem padrão de simetria claro, afastando-se da normalidade.
Investimento Público em Tecnologia: Distribuição assimétrica à direita, com cauda longa, indicando afastamento da normalidade.
Velocidade Média (Mbps): Distribuição altamente assimétrica à direita, com concentração em valores mais baixos e cauda longa, caracterizando desvio da normalidade.
Usuários de Internet: distribuição aproximadamente normal.
Dispositivos Conectados: um pouco afastado da normalidade, mas próximo.
Investimento Público: forte desvio da normalidade.
Velocidade Média (Mbps): leve desvio da normalidade.
##
## Shapiro-Wilk normality test
##
## data: tech_filter$n_usuarios_internet
## W = 0.99467, p-value = 0.09462
##
## Shapiro-Wilk normality test
##
## data: tech_filter$n_dispositivos_conectados
## W = 0.9537, p-value = 4.023e-11
##
## Shapiro-Wilk normality test
##
## data: tech_filter$investimento_publico_tecnologia
## W = 0.95925, p-value = 2.947e-10
##
## Shapiro-Wilk normality test
##
## data: tech_filter$velocidade_media_mbps
## W = 0.99675, p-value = 0.4506
Número de Usuários de Internet: - p-valor = 0,09462 - Não rejeita a normalidade (distribuição normal).
Número de Dispositivos Conectados: - p-valor = 4.023e-11 - Rejeita a normalidade (distribuição não normal).
Investimento Público em Tecnologia: - p-valor = 2.947e-10 - Rejeita a normalidade (distribuição não normal).
Velocidade Média (Mbps): - p-valor = 0.4506 - Não rejeita a normalidade (distribuição aproximadamente normal).
Com base na análise combinada dos histogramas, gráficos Q-Q e testes de Shapiro-Wilk, conclui-se que as variáveis Número de Usuários de Internet e Velocidade Média (Mbps) podem ser consideradas aproximadamente normais, enquanto Número de Dispositivos Conectados e Investimento Público em Tecnologia apresentam desvios que indicam a ausência de normalidade.
ggplot(tech_filter, aes(x = cidade, y = n_usuarios_internet)) +
geom_boxplot(fill = "lightblue", color = "darkblue") +
labs(
title = "Distribuição do Número de Usuários de Internet por Cidade",
x = "Cidade",
y = "Número de Usuários de Internet"
) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))Para todas as cidades, o número de usuários de internet se concentra entre 49.600 e 50.400 aproximadamente. O volume de usuários de internet é relativamente estável entre as cidades analisadas. As medianas estão muito próximas de 50.000 usuários em quase todas as cidades. Salvador apresenta uma caixa mais ampla que outras cidades. Curitiba, São Paulo e Manaus têm uma distribuição mais concentrada. Cidades como Porto Alegre, Brasília e São Paulo mostram outliers. Esses pontos representam meses específicos em que o número de usuários foi anormalmente mais baixo (ou mais alto). Salvador e Rio de Janeiro têm mais dispersão do que cidades como Curitiba ou São Paulo.
ggplot(tech_filter, aes(x = cidade, y = n_usuarios_internet)) +
geom_boxplot(fill = "lightblue", color = "darkblue") +
labs(
title = "Distribuição do Número de Usuários de Internet por Cidade (2019–2022)",
x = "Cidade",
y = "Número de Usuários de Internet"
) +
facet_wrap(~ ano) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))As medianas de cada cidade não mudam muito ao longo dos anos. A variação interna dentro das cidades muda um pouco, mas de maneira geral é moderada. Não houve grandes alterações no perfil geral de uso de internet entre 2019–2022, pelo menos em termos de número de usuários.
ggplot(tech_filter, aes(x = as.factor(mes), y = n_usuarios_internet)) +
geom_boxplot(fill = "lightgreen", color = "darkgreen") +
labs(
title = "Distribuição do Número de Usuários de Internet por Mês (2019–2022)",
x = "Mês",
y = "Número de Usuários de Internet"
) +
facet_wrap(~ ano) +
theme_minimal()desvio_por_mes <- tech_filter %>%
group_by(ano, mes) %>%
summarise(
desvio = sd(n_usuarios_internet, na.rm = TRUE)
) %>%
group_by(mes) %>%
summarise(media_desvio = mean(desvio)) %>%
arrange(media_desvio)## `summarise()` has grouped output by 'ano'. You can override using the `.groups`
## argument.
## # A tibble: 12 × 2
## mes media_desvio
## <dbl> <dbl>
## 1 2 175.
## 2 9 179.
## 3 6 190.
## 4 7 190.
## 5 10 229.
## 6 8 232.
## 7 12 235.
## 8 11 242.
## 9 1 252.
## 10 5 253.
## 11 4 257.
## 12 3 264.
iqr_por_mes <- tech_filter %>%
group_by(ano, mes) %>%
summarise(
iqr = IQR(n_usuarios_internet, na.rm = TRUE)
) %>%
group_by(mes) %>%
summarise(media_iqr = mean(iqr)) %>%
arrange(media_iqr)## `summarise()` has grouped output by 'ano'. You can override using the `.groups`
## argument.
## # A tibble: 12 × 2
## mes media_iqr
## <dbl> <dbl>
## 1 9 187.
## 2 7 191.
## 3 2 192.
## 4 10 226.
## 5 12 239.
## 6 8 242.
## 7 5 259.
## 8 6 267.
## 9 3 286.
## 10 1 291.
## 11 4 292.
## 12 11 317.
A partir da análise conjunta do desvio padrão médio e do intervalo interquartílico médio, ficou claro que os meses de Fevereiro e Setembro apresentam a menor variabilidade, tanto considerando toda a distribuição dos dados, quanto considerando apenas o seu centro.
tech_filter %>%
filter(cidade %in% c("São Paulo", "Rio de Janeiro", "Belo Horizonte")) %>%
ggplot(aes(x = cidade, y = n_usuarios_internet)) +
geom_boxplot(fill = "lightblue", color = "darkblue") +
labs(
title = "Usuários de Internet em Cidades da Região Sudeste",
x = "Cidade",
y = "Número de Usuários de Internet"
) +
theme_minimal()As cidades selecionadas ainda mantêm a mesma concentração de usuários
(medianas muito próximas de 50.000 usuários). Rio de Janeiro apresenta a
maior dispersão entre as cidades. A caixa é mais larga, o que indica que
há mais variação no número de usuários de internet ao longo dos meses.
São Paulo apresenta uma dispersão pequena, parecida com Belo
Horizonte.
São Paulo apresenta alguns outliers para baixo, indicando meses em que
São Paulo teve menos usuários do que o esperado.
tech_filter %>%
filter(cidade %in% c("São Paulo", "Rio de Janeiro", "Belo Horizonte")) %>%
ggplot(aes(x = cidade, y = n_usuarios_internet)) +
geom_violin(fill = "lightblue", color = "darkblue") +
labs(
title = "Distribuição do Número de Usuários de Internet por Cidade da Região Sudeste (2019–2022)",
x = "Cidade",
y = "Número de Usuários de Internet"
) +
facet_wrap(~ ano) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))O estudo ao longo dos anos de 2019 a 2022 revelou uma tendência de estabilidade nos valores medianos, em torno de 50.000 usuários. Belo Horizonte apresentou a menor variação ao longo dos anos, com distribuições mais compactas, enquanto o Rio de Janeiro exibiu maior dispersão no número de usuários. São Paulo apresentou alguns outliers principalmente em 2019 e 2020, indicando meses em que o número de usuários foi inferior ao esperado. De modo geral, as três cidades demonstraram uma relativa consistência no comportamento do número de usuários de internet, especialmente a partir de 2021, possivelmente refletindo a consolidação do acesso digital após o período mais crítico da pandemia.
tech_filter %>%
filter(
cidade %in% c("São Paulo", "Rio de Janeiro", "Belo Horizonte"),
mes %in% c(2, 9)
) %>%
ggplot(aes(x = cidade, y = n_usuarios_internet)) +
geom_boxplot(fill = "lightgreen", color = "darkgreen") +
labs(
title = "Distribuição do Número de Usuários de Internet por Cidade da Região Sudeste (02 e 09 / 2019–2022)",
x = "Cidade",
y = "Número de Usuários de Internet"
) +
facet_wrap(~ ano) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))A escolha dos meses de Fevereiro e Setembro para análise se justifica pela maior estabilidade observada na distribuição do número de usuários de internet nas cidades do Sudeste ao longo de 2019 a 2022. Essa estabilidade, identificada por baixos valores de dispersão (desvio padrão e IQR), indica que esses meses refletem melhor o comportamento típico dos dados, minimizando efeitos sazonais e variações atípicas.
tech_filter %>%
filter(
cidade %in% c("São Paulo", "Rio de Janeiro", "Belo Horizonte"),
mes %in% c(2, 9)
) %>%
ggplot(aes(x = ano, y = n_usuarios_internet, color = cidade, group = cidade)) +
geom_line(size = 1) +
geom_point(size = 2) +
labs(
title = "Evolução do Número de Usuários de Internet em 02 e 09 (2019–2022)",
x = "Ano",
y = "Número de Usuários de Internet",
color = "Cidade"
) +
theme_minimal() +
theme(
plot.title = element_text(hjust = 0.5),
axis.text.x = element_text(angle = 0, vjust = 0.5)
)Em Belo Horizonte, houve uma variação moderada ao longo dos meses selecionados nos anos, com quedas em 2021 e 2022. O Rio de Janeiro teve grande alta no número de usuários em 2020 (possivelmente por crescimento do home office, ensino remoto, etc. provocados pela pandemia), porém após isso apresentou uma tendência de queda no número de usuários, sinalizando uma possível perda gradual de usuários ou outras alterações no perfil de conectividade da cidade. Já em São Paulo, a linha revela um comportamento um pouco mais estável, com variações pequenas ao longo dos quatro anos, indicando consistência no número de usuários de internet.
tech_filter %>%
filter(
cidade %in% c("São Paulo", "Rio de Janeiro", "Belo Horizonte"),
mes %in% c(2, 9)
) %>%
ggplot(aes(x = mes_ano, y = velocidade_media_mbps, color = cidade)) +
geom_line() +
labs(
title = "Evolução da Velocidade Média de Internet no Sudeste (Fevereiro e Setembro)",
x = "Mês/Ano",
y = "Velocidade Média (Mbps)",
color = "Cidade"
) +
theme_minimal()## Cross-Tabulation, Total Proportions
## mes_ano * cidade
## Data Frame: tech_filter
##
## ------------ -------- ---------------- ------------ ------------ ------------ ------------ -------------- ------------ ---------------- ------------ ------------ --------------
## cidade Belo Horizonte Brasília Curitiba Fortaleza Manaus Porto Alegre Recife Rio de Janeiro Salvador São Paulo Total
## mes_ano
## 2019-01-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2019-02-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2019-03-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2019-04-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2019-05-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2019-06-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2019-07-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2019-08-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2019-09-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2019-10-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2019-11-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2019-12-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2020-01-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2020-02-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2020-03-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2020-04-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2020-05-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2020-06-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2020-07-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2020-08-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2020-09-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2020-10-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2020-11-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2020-12-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2021-01-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2021-02-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2021-03-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2021-04-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2021-05-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2021-06-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2021-07-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2021-08-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2021-09-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2021-10-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2021-11-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2021-12-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2022-01-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2022-02-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2022-03-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2022-04-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2022-05-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2022-06-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2022-07-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2022-08-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2022-09-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2022-10-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2022-11-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## 2022-12-01 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 1 ( 0.2%) 10 ( 2.1%)
## Total 48 (10.0%) 48 (10.0%) 48 (10.0%) 48 (10.0%) 48 (10.0%) 48 (10.0%) 48 (10.0%) 48 (10.0%) 48 (10.0%) 48 (10.0%) 480 (100.0%)
## ------------ -------- ---------------- ------------ ------------ ------------ ------------ -------------- ------------ ---------------- ------------ ------------ --------------
A tabela de contingência construída a partir das variáveis mes_ano e cidade evidencia que há uma observação correspondente a cada cidade em cada mês/ano no período analisado (2019–2022). Cada célula da tabela indica a existência de um registro (1 ocorrência), representando 0,2% do total de dados. Esses resultados demonstram que a base de dados está completa no que diz respeito à combinação entre cidade e período temporal, não havendo lacunas nos registros analisados.
#Calculando os histogramas para o mesmo evento em diferentes instantes de tempo
fd_binwidth <- 2 * IQR(tech_filter$n_usuarios_internet, na.rm = TRUE) / (length(tech_filter$n_usuarios_internet)^(1/3))
tech_filter %>%
ggplot(aes(x = n_usuarios_internet)) +
geom_histogram(aes(y = after_stat(density)), binwidth = fd_binwidth, fill = 'lightblue', color = "darkblue") +
geom_density(kernel = 'epanechnikov', color = "red", size = 1) +
facet_wrap(~ mes_ano) +
labs(
title = "Distribuição do Número de Usuários de Internet por Mês/Ano",
x = "Número de Usuários de Internet",
y = "Densidade"
) +
theme_minimal()Em geral, a distribuição do número de usuários não é perfeitamente normal (não forma um “sino” simétrico perfeito em vários meses). Alguns meses mostram uma distribuição mais centralizada (picos definidos e bem no centro). Outros meses mostram uma distribuição mais espalhada ou com mais de um pico. Alguns meses, em alguns anos (por exemplo, fevereiro e setembro, como já havia identificado antes) tendem a apresentar curvas de densidade mais suaves e menos distorcidas — o que reforça que esses meses têm comportamento mais estável entre as cidades.
Agora, para o Evento aleatório de escolher uma cidade/mês em que a velocidade média da internet foi superior a 50 Mbps, necessito filtrar o espaço amostral para o meu interesse.
sudeste_ufs <- c("São Paulo", "Rio de Janeiro", "Belo Horizonte")
tech_sudeste <- tech_filter %>%
filter(cidade %in% sudeste_ufs, velocidade_media_mbps > 50)## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 49341 49756 49998 49971 50138 50555
O número de usuários de internet para as cidades do Sudeste com velocidade média superior a 50 Mbps apresenta uma distribuição bastante concentrada em torno de 50.000 usuários, com média e mediana muito próximas. A variação entre o menor e o maior número de usuários é pequena, indicando baixa dispersão dos dados.
tech_filter %>% dplyr::group_by(mes_ano) %>% dplyr::summarize(n_users_md = median(n_usuarios_internet))## # A tibble: 48 × 2
## mes_ano n_users_md
## <date> <dbl>
## 1 2019-01-01 50084.
## 2 2019-02-01 50030
## 3 2019-03-01 49963
## 4 2019-04-01 49924.
## 5 2019-05-01 50008.
## 6 2019-06-01 49950
## 7 2019-07-01 49962.
## 8 2019-08-01 50056.
## 9 2019-09-01 50046
## 10 2019-10-01 49944.
## # ℹ 38 more rows
tech_filter %>%
ggplot(aes(x = reorder(cidade, n_usuarios_internet, median), y = n_usuarios_internet)) +
geom_boxplot() +
xlab('Cidades (ordenadas por mediana de usuários)') +
ylab('Número de Usuários de Internet') +
ggtitle('Distribuição do Número de Usuários por Cidade') +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5))### Por mês
tech_filter %>% ggplot(aes(x = as.factor(cidade))) + geom_boxplot(aes(y = n_usuarios_internet))+ xlab('Cidades') + ylab('Número de usuários conectados') + facet_wrap(~mes_ano)### 5 cidades com mais usuários
top_cidades <- tech_filter %>%
group_by(cidade) %>%
summarise(media_usuarios = mean(n_usuarios_internet, na.rm = TRUE)) %>%
top_n(5, media_usuarios) %>%
pull(cidade)
tech_filter %>%
filter(cidade %in% top_cidades) %>%
ggplot(aes(x = cidade, y = n_usuarios_internet)) +
geom_boxplot() +
xlab('Top 10 Cidades') +
ylab('Número de Usuários de Internet') +
ggtitle('Top 5 Cidades - Número de Usuários de Internet') +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5))
## Calculando o R ao quadrado para a relação de usuários conectados por
região
tech_filter %>%
dplyr::group_by(mes_ano) %>%
do(modelo = lm(n_usuarios_internet ~ as.factor(cidade), .)) %>%
dplyr::mutate(r.ao.quadrado = summary(modelo)$r.squared) %>%
dplyr::select(-modelo) %>%
kable()| mes_ano | r.ao.quadrado |
|---|---|
| 2019-01-01 | 1 |
| 2019-02-01 | 1 |
| 2019-03-01 | 1 |
| 2019-04-01 | 1 |
| 2019-05-01 | 1 |
| 2019-06-01 | 1 |
| 2019-07-01 | 1 |
| 2019-08-01 | 1 |
| 2019-09-01 | 1 |
| 2019-10-01 | 1 |
| 2019-11-01 | 1 |
| 2019-12-01 | 1 |
| 2020-01-01 | 1 |
| 2020-02-01 | 1 |
| 2020-03-01 | 1 |
| 2020-04-01 | 1 |
| 2020-05-01 | 1 |
| 2020-06-01 | 1 |
| 2020-07-01 | 1 |
| 2020-08-01 | 1 |
| 2020-09-01 | 1 |
| 2020-10-01 | 1 |
| 2020-11-01 | 1 |
| 2020-12-01 | 1 |
| 2021-01-01 | 1 |
| 2021-02-01 | 1 |
| 2021-03-01 | 1 |
| 2021-04-01 | 1 |
| 2021-05-01 | 1 |
| 2021-06-01 | 1 |
| 2021-07-01 | 1 |
| 2021-08-01 | 1 |
| 2021-09-01 | 1 |
| 2021-10-01 | 1 |
| 2021-11-01 | 1 |
| 2021-12-01 | 1 |
| 2022-01-01 | 1 |
| 2022-02-01 | 1 |
| 2022-03-01 | 1 |
| 2022-04-01 | 1 |
| 2022-05-01 | 1 |
| 2022-06-01 | 1 |
| 2022-07-01 | 1 |
| 2022-08-01 | 1 |
| 2022-09-01 | 1 |
| 2022-10-01 | 1 |
| 2022-11-01 | 1 |
| 2022-12-01 | 1 |
Cada cidade tem só um valor de n_usuarios_internet em cada mes_ano, então o modelo consegue mostrar perfeitamente.
tech_filter %>% ggplot(aes(x = n_usuarios_internet, y = n_dispositivos_conectados)) +geom_point() + facet_wrap(~mes_ano) + stat_cor(method="pearson") + xlab('Número de Usuários conectados') + ylab('Número de Dispositivos conectados') + geom_smooth(method = "lm")## `geom_smooth()` using formula = 'y ~ x'
tech_filter %>% ggplot(aes(x = n_usuarios_internet, y = n_dispositivos_conectados)) +geom_point() + facet_wrap(~mes_ano) + stat_cor(method="spearman") + xlab('Número de Usuários conectados') + ylab('Número de Dispositivos conectados') + geom_smooth()## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Pearson mostra que, linearmente, o número de usuários não explica bem a variação no número de dispositivos conectados, na maioria dos meses. Spearman também mostra correlações fracas (a maioria dos R perto de 0). Mesmo olhando para relações que poderiam ser monotônicas (não exatamente linhas retas), não encontrei relações fortes e consistentes entre usuários e dispositivos.
boxplot(tech_sudeste$n_usuarios_internet,
main = "Distribuição do Número de Usuários de Internet\n(Cidades do Sudeste, Velocidade > 50 Mbps)",
ylab = "Nº de Usuários de Internet")O boxplot do número de usuários de internet nas cidades do Sudeste com velocidade superior a 50 Mbps revela uma distribuição simétrica e com baixa dispersão. A maioria dos registros se concentra próximo de 50.000 usuários, sem a presença de outliers.
hist(tech_sudeste$n_usuarios_internet,
main = "Histograma: Usuários de Internet (Sudeste, Velocidade > 50 Mbps)",
xlab = "Nº de Usuários",
breaks = 30)O histograma do número de usuários de internet nas cidades do Sudeste com velocidade maior que 50 Mbps mostra uma distribuição aproximadamente simétrica, com maior concentração de registros próximos a 50.000 usuários. A dispersão é pequena, indicando pouca variação no número de usuários entre as cidades analisadas.
Cidade/mês do Sudeste onde a velocidade média de internet foi superior a 50 Mbps
total_registros_sudeste <- nrow(tech_sudeste)
total_registros_geral <- nrow(tech_filter)
probabilidade_evento <- total_registros_sudeste / total_registros_geral
probabilidade_evento## [1] 0.1333333
A chance de escolher aleatoriamente uma cidade/mês do Brasil onde a velocidade média de internet seja superior a 50 Mbps e esteja localizada na Região Sudeste é de aproximadamente 13,33%.
H₀: “A velocidade média da internet nas cidades do Sudeste é igual ou inferior a 50 Mbps.”
H₁: “A velocidade média da internet nas cidades do Sudeste é superior a 50 Mbps.”
##
## One Sample t-test
##
## data: tech_sudeste$velocidade_media_mbps
## t = 9.2029, df = 63, p-value = 1.444e-13
## alternative hypothesis: true mean is greater than 50
## 95 percent confidence interval:
## 59.29151 Inf
## sample estimates:
## mean of x
## 61.35047
Com um p-valor extremamente pequeno (p < 0,01), rejeitamos a hipótese nula de que a velocidade média da internet nas cidades do Sudeste é igual ou inferior a 50 Mbps a qualquer nível de significância. Assim, temos evidências estatísticas para aceitar a hipótese alternativa de que a velocidade média é superior a 50 Mbps.
Realizado o teste de Wilcoxon para checar o pareamento entre as distribuições de número de usuários do pré e do pós pandemia.
H₀: “A mediana do número de usuários de internet é igual antes e depois de 2020.”
H₁: “A mediana do número de usuários de internet é diferente antes e depois de 2020.”
usuarios_antes_2020 <- tech_filter %>%
filter(as.numeric(substr(mes_ano, 1, 4)) < 2020) %>%
pull(n_usuarios_internet)
usuarios_depois_2020 <- tech_filter %>%
filter(as.numeric(substr(mes_ano, 1, 4)) >= 2020) %>%
pull(n_usuarios_internet)
wilcox.test(usuarios_antes_2020, usuarios_depois_2020, paired = FALSE, exact = FALSE)##
## Wilcoxon rank sum test with continuity correction
##
## data: usuarios_antes_2020 and usuarios_depois_2020
## W = 20964, p-value = 0.6289
## alternative hypothesis: true location shift is not equal to 0
Neste caso, não rejeitamos a hipótese nula. Não há evidências suficientes para afirmar que a mediana do número de usuários de internet mudou antes e depois de 2020.
H₀: “A hipótese nula aqui é: A mediana do número de usuários de internet é igual antes e depois de 2020.”
H₁: “A hipótese alternativa: A mediana das diferenças (antes - depois) é maior que 0.”
wilcox.test(usuarios_antes_2020, usuarios_depois_2020, paired = FALSE, alternative = "greater", exact = FALSE)##
## Wilcoxon rank sum test with continuity correction
##
## data: usuarios_antes_2020 and usuarios_depois_2020
## W = 20964, p-value = 0.6858
## alternative hypothesis: true location shift is greater than 0
Neste caso, mais uma vez, não rejeitamos a hipótese nula. Não há evidências suficientes para afirmar que a mediana do número de usuários antes de 2020 seja maior que a mediana depois de 2020.
H₀: “A mediana do número de usuários de internet é igual antes e depois de 2020.”
H₁: “A mediana das diferenças (antes - depois) é menor que 0.”
wilcox.test(usuarios_antes_2020, usuarios_depois_2020, paired = FALSE, alternative = "less", exact = FALSE)##
## Wilcoxon rank sum test with continuity correction
##
## data: usuarios_antes_2020 and usuarios_depois_2020
## W = 20964, p-value = 0.3144
## alternative hypothesis: true location shift is less than 0
Finalmente, não temos evidências suficientes para afirmar que o número de usuários antes de 2020 era menor do que depois. Portanto, mais uma vez, não rejeitamos a hipótese nula.
tabela_testes <- data.frame(
Teste = c("Bilateral (two-sided)", "Unilateral (greater)", "Unilateral (less)"),
`Hipótese Alternativa` = c(
"Mediana antes ≠ Mediana depois",
"Mediana antes > Mediana depois",
"Mediana antes < Mediana depois"
),
`p-valor` = c(0.6289, 0.6858, 0.3144),
Conclusão = c(
"Não rejeita H₀ (sem diferença significativa)",
"Não rejeita H₀ (sem evidência de que era maior)",
"Não rejeita H₀ (sem evidência de que aumentou depois)"
)
)
kable(tabela_testes, caption = "Resumo dos Testes de Wilcoxon sobre o Número de Usuários de Internet")| Teste | Hipótese.Alternativa | p.valor | Conclusão |
|---|---|---|---|
| Bilateral (two-sided) | Mediana antes ≠ Mediana depois | 0.6289 | Não rejeita H₀ (sem diferença significativa) |
| Unilateral (greater) | Mediana antes > Mediana depois | 0.6858 | Não rejeita H₀ (sem evidência de que era maior) |
| Unilateral (less) | Mediana antes < Mediana depois | 0.3144 | Não rejeita H₀ (sem evidência de que aumentou depois) |
tech_filter %>%
ggplot(aes(x = n_usuarios_internet)) + stat_ecdf(geom = "step") +
geom_vline(
data = tech_filter %>%
group_by(mes_ano) %>%
summarize(n_users_md = median(n_usuarios_internet)),
aes(xintercept = n_users_md),
color = "red",
linetype = "dashed",
inherit.aes = FALSE
) +
facet_wrap(~ mes_ano) +
theme_bw() +
labs(
title = "Função de Distribuição Acumulada do Número de Usuários de Internet por Mês/Ano",
x = "Número de Usuários de Internet",
y = "Frequência Acumulada"
)## Warning in geom_vline(data = tech_filter %>% group_by(mes_ano) %>%
## summarize(n_users_md = median(n_usuarios_internet)), : Ignoring unknown
## parameters: `inherit.aes`
# Distribuição Acumulada Empírica para n_usuarios_internet no Sudeste
ggplot(tech_sudeste, aes(x = n_usuarios_internet)) +
stat_ecdf(geom = "step") +
labs(title = "Distribuição Acumulada Empírica\nNúmero de Usuários de Internet",
x = "Nº de Usuários de Internet",
y = "Probabilidade Acumulada") +
theme_minimal()As curvas ECDF demonstraram um comportamento de subida rápida em torno da mediana, indicando que os valores observados em cada mês estavam fortemente agrupados em uma faixa estreita de variação, tipicamente entre 49.600 e 50.400 usuários. A presença da linha vermelha tracejada, correspondente à mediana de cada mês, evidenciou a estabilidade no número de usuários de internet nas cidades analisadas ao longo do período estudado, com pequenas flutuações ocasionais.
O segundo gráfico confirma que a maioria dos registros analisados está concentrada em torno de 50.000 usuários. Observa-se que 50% das cidades/mês possuem até aproximadamente 50.000 usuários, evidenciando a baixa dispersão dos dados no espaço amostral considerado.
Responda a pergunta: através de investigação visual, quais são as variáveis mais correlacionadas. Apresente o gráfico e justifique.
Aqui investigamos: será que mais usuários → mais velocidade?
# Scatterplot: Número de usuários de internet x Velocidade média da internet
tech_sudeste %>%
filter(!is.na(n_usuarios_internet), !is.na(velocidade_media_mbps)) %>%
ggplot(aes(x = n_usuarios_internet, y = velocidade_media_mbps)) +
geom_point(alpha = 0.6) +
geom_smooth(method = "lm", se = FALSE, color = "blue") +
theme_classic() +
labs(
title = "Dispersão: Número de Usuários de Internet vs Velocidade Média",
x = "Nº de Usuários de Internet",
y = "Velocidade Média (Mbps)"
)## `geom_smooth()` using formula = 'y ~ x'
Existe uma correlação positiva muito fraca entre o número de usuários de internet e a velocidade média da internet nas cidades do Sudeste analisadas.
Aqui investigamos: será que mais dispositivos conectados afetam a velocidade?
tech_sudeste %>%
filter(!is.na(n_dispositivos_conectados), !is.na(velocidade_media_mbps)) %>%
ggplot(aes(x = n_dispositivos_conectados, y = velocidade_media_mbps)) +
geom_point(alpha = 0.6) +
geom_smooth(method = "lm", se = FALSE, color = "darkgreen") +
theme_classic() +
labs(
title = "Dispositivos Conectados vs Velocidade Média",
x = "Número de Dispositivos Conectados",
y = "Velocidade Média (Mbps)"
)## `geom_smooth()` using formula = 'y ~ x'
Existe uma correlação negativa muito fraca entre o número de dispositivos conectados e a velocidade média da internet nas cidades do Sudeste analisadas.
Aqui investigamos: será que onde há mais investimento → melhor internet?
tech_sudeste %>%
filter(!is.na(investimento_publico_tecnologia), !is.na(velocidade_media_mbps)) %>%
ggplot(aes(x = investimento_publico_tecnologia, y = velocidade_media_mbps)) +
geom_point(alpha = 0.6) +
geom_smooth(method = "lm", se = FALSE, color = "purple") +
theme_classic() +
labs(
title = "Investimento Público vs Velocidade Média",
x = "Investimento Público em Tecnologia (R$)",
y = "Velocidade Média (Mbps)"
)## `geom_smooth()` using formula = 'y ~ x'
Existe uma correlação positiva fraca entre o investimento público em tecnologia e a velocidade média da internet nas cidades do Sudeste analisadas.
## [1] 0.06689141
Correlação muito próxima de 0, que indica que não há praticamente nenhuma relação linear entre o número de usuários e a velocidade média da internet na sua base de dados.
cor(tech_sudeste$n_dispositivos_conectados, tech_sudeste$velocidade_media_mbps, use = "complete.obs")## [1] -0.1003889
Correlação fraca e negativa, que indica que existe uma tendência muito leve: à medida que o número de dispositivos conectados aumenta, a velocidade média tende a diminuir.
cor(tech_sudeste$investimento_publico_tecnologia, tech_sudeste$velocidade_media_mbps, use = "complete.obs")## [1] 0.2995732
Correlação positiva moderadamente fraca, que sugere que quando há mais investimento público em tecnologia, a velocidade média da internet tende a aumentar — mas a força da relação ainda não é considerada uma correlação forte.
Resposta: a investigação visual das correlações entre as variáveis da base de dados mostra que, de forma geral, as relações lineares entre as variáveis são fracas. A variável que apresenta maior correlação visual é investimento público em tecnologia com velocidade média da internet, indicando uma tendência positiva: maiores investimentos tendem a estar associados a velocidades médias mais altas. Já o número de usuários de internet e o número de dispositivos conectados mostram pouca ou nenhuma relação visual com a velocidade.
tech_filter %>%
ggplot(aes(x = mes_ano, y = n_usuarios_internet)) +
geom_point(size = 2, alpha = 0.7) +
labs(title = "Dispersão do Número de Usuários (Velocidade > 50 Mbps)",
x = "Mês/Ano",
y = "Número de Usuários de Internet") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))dados_agg <- tech %>%
select(mes, ano, uf, n_usuarios_internet, n_dispositivos_conectados) %>%
mutate(mes_ano = as.Date(paste(ano, mes, "01", sep = "-"), format = "%Y-%m-%d")) %>%
group_by(mes_ano) %>%
summarise(
n_usuarios_internet = sum(n_usuarios_internet, na.rm = TRUE),
n_dispositivos_conectados = sum(n_dispositivos_conectados, na.rm = TRUE)
) %>%
filter(mes_ano > as.Date("2019-01-01", format = "%Y-%m-%d"))
ggplot(dados_agg, aes(x = mes_ano)) +
geom_line(aes(y = n_usuarios_internet, color = "Número de Usuários")) +
geom_point(aes(y = n_usuarios_internet, color = "Número de Usuários")) +
geom_line(aes(y = n_dispositivos_conectados, color = "Dispositivos Conectados")) +
geom_point(aes(y = n_dispositivos_conectados, color = "Dispositivos Conectados")) +
ylab("# de Usuários e Dispositivos Conectados") +
xlab("Horizonte Temporal") +
labs(title = "Evolução Temporal de Usuários e Dispositivos") +
theme_bw() +
scale_color_manual(values = c("Número de Usuários" = "blue", "Dispositivos Conectados" = "red"))A análise temporal do número de usuários e dispositivos conectados no Brasil entre 2019 e 2024 revela dois comportamentos distintos. O número de usuários de internet manteve-se estável ao longo do período, indicando a consolidação do acesso digital no país. Por outro lado, o número de dispositivos conectados apresentou oscilações expressivas, com picos nos anos de 2020 e 2021 — possivelmente impulsionados por fatores como o aumento da conectividade domiciliar durante a pandemia e a expansão da tecnologia móvel, ou até mesmo eventos sazonais como feriados prolongados. Observa-se uma tendência de redução no número de dispositivos conectados a partir de 2023, o que pode refletir mudanças no comportamento de consumo, na infraestrutura de rede etc.
dados_agg_sudeste <- tech %>%
filter(cidade %in% c("Rio de Janeiro", "São Paulo", "Belo Horizonte")) %>%
select(mes, ano, uf, cidade, n_usuarios_internet, n_dispositivos_conectados) %>%
mutate(mes_ano = as.Date(paste(ano, mes, "01", sep = "-"), format = "%Y-%m-%d")) %>%
group_by(mes_ano) %>%
summarise(
n_usuarios_internet = sum(n_usuarios_internet, na.rm = TRUE),
n_dispositivos_conectados = sum(n_dispositivos_conectados, na.rm = TRUE)
) %>%
filter(mes_ano > as.Date("2019-01-01", format = "%Y-%m-%d"))
ggplot(dados_agg_sudeste, aes(x = mes_ano)) +
geom_line(aes(y = n_usuarios_internet, color = "Número de Usuários")) +
geom_point(aes(y = n_usuarios_internet, color = "Número de Usuários")) +
geom_line(aes(y = n_dispositivos_conectados, color = "Dispositivos Conectados")) +
geom_point(aes(y = n_dispositivos_conectados, color = "Dispositivos Conectados")) +
ylab("# de Usuários e Dispositivos Conectados") +
xlab("Horizonte Temporal") +
labs(title = "Evolução Temporal de Usuários e Dispositivos no Sudeste") +
theme_bw() +
scale_color_manual(values = c("Número de Usuários" = "blue", "Dispositivos Conectados" = "red"))A análise temporal do número de usuários e de dispositivos conectados na Região Sudeste revela alta instabilidade nos dados ao longo do período analisado (2019–2024). Ambos os indicadores apresentaram variações significativas mês a mês, sendo a flutuação do número de dispositivos conectados ainda mais acentuada. Esse comportamento sugere a influência de fatores externos e sazonais na dinâmica de acesso e uso de tecnologia nas cidades do Sudeste.
tech %>%
select(n_usuarios_internet, n_dispositivos_conectados) %>%
cor(method = "spearman") %>%
corrplot(title = "Correlação de Pearson entre Usuários e Dispositivos (Todos os Meses) - Spearman")tech %>%
select(n_usuarios_internet, velocidade_media_mbps) %>%
cor(method = "spearman") %>%
corrplot(title = "Correlação de Pearson entre Usuários e Velocidade (Todos os Meses) - Pearson")A análise de correlação de Pearson e Spearman entre o número de usuários de internet e o número de dispositivos conectados indicou uma relação linear praticamente inexistente. Esse resultado sugere que a quantidade de dispositivos conectados em uma localidade não esteve diretamente associada ao número de usuários de internet, refletindo possivelmente a presença de múltiplos dispositivos por usuário ou fatores relacionados à infraestrutura e perfil de consumo tecnológico. No caso da comparação de usuários com a velocidade, o resultado demonstra que há valores ausentes na base para a variável Velocidade_media_mbps.
Qualidade dos dados tem sido um dos temas mais abordados nos projetos de estruturação em data analytics, sendo um dos principais indicadores do nível de maturidade das organizações. Um dos problemas mais comuns de qualidade é relacionado à completude de dados. Em suas palavras, como é definido completude? Qual o impacto em uma análise exploratória de dados?
Completude é quando os dados estão preenchidos, sem informações faltando. Se muitos dados estão vazios ou ausentes, a análise exploratória pode ficar prejudicada, porque pode gerar resultados errados, mostrar padrões que não existem ou esconder tendências importantes. Ter dados completos é importante para que as conclusões sejam confiáveis. Levando em conta minha base antes da imputação dos dados, como já mencionei anteriormente, existia um percentual de missings na variável velocidade_media_mbps.
## # A tibble: 1 × 14
## cidade uf mes ano mes_ano n_usuarios_internet velocidade_media_mbps
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 100 100 100 100 100 100 97.0
## # ℹ 7 more variables: n_dispositivos_conectados <dbl>, indice_inovacao <dbl>,
## # investimento_publico_tecnologia <dbl>,
## # eventos_tecnologicos_realizados <dbl>, startups_ativas <dbl>,
## # patentes_registradas <dbl>, mes_ano_data <dbl>
Quase todas as variáveis apresentam 100% de completude, exceto “velocidade média (Mbps)”, que possui cerca de 97% de preenchimento, indicando alguns dados faltantes que podem impactar a análise.
## # A tibble: 1 × 8
## cidade mes ano n_usuarios_internet velocidade_media_mbps
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 100 100 100 100 100
## # ℹ 3 more variables: n_dispositivos_conectados <dbl>,
## # investimento_publico_tecnologia <dbl>, mes_ano <dbl>
Depois da minha base inputada, commo é possível ver, todas as variáveis da base possuem 100% de completude, sem valores ausentes.
Estou rodando um modelo de regressão linear simples com o objetivo de avaliar se algumas associações fazem sentido.
Nesse primeiro momento, minha proposta é observar se a velocidade média da internet influencia o número de usuários de internet nas cidades, considerando registros com velocidade superior a 50 Mbps.
modelo_velocidade <- lm(n_usuarios_internet ~ velocidade_media_mbps, data = tech_filter)
summary(modelo_velocidade)##
## Call:
## lm(formula = n_usuarios_internet ~ velocidade_media_mbps, data = tech_filter)
##
## Residuals:
## Min 1Q Median 3Q Max
## -664.08 -145.43 6.72 146.12 664.92
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.997e+04 3.640e+01 1372.732 <2e-16 ***
## velocidade_media_mbps 7.151e-01 6.950e-01 1.029 0.304
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 231.2 on 478 degrees of freedom
## Multiple R-squared: 0.00221, Adjusted R-squared: 0.0001224
## F-statistic: 1.059 on 1 and 478 DF, p-value: 0.3041
O resultado da regressão indicou que o coeficiente da velocidade média (0,7151) não foi significativo (p-value = 0,304), e o modelo apresentou um R² de apenas 0,22%, indicando que a variável velocidade média explica muito pouco da variação no número de usuários.
Nesse modelo de regressão linear com variável categórica, estou investigando se existem diferenças no número de usuários de internet entre as cidades analisadas.
modelo_cidade <- lm(n_usuarios_internet ~ as.factor(cidade), data = tech_filter)
summary(modelo_cidade)##
## Call:
## lm(formula = n_usuarios_internet ~ as.factor(cidade), data = tech_filter)
##
## Residuals:
## Min 1Q Median 3Q Max
## -689.50 -150.56 9.25 148.75 647.50
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 49989.500 33.488 1492.751 <2e-16 ***
## as.factor(cidade)Brasília 51.833 47.359 1.094 0.274
## as.factor(cidade)Curitiba 14.250 47.359 0.301 0.764
## as.factor(cidade)Fortaleza 21.604 47.359 0.456 0.648
## as.factor(cidade)Manaus 31.729 47.359 0.670 0.503
## as.factor(cidade)Porto Alegre 5.479 47.359 0.116 0.908
## as.factor(cidade)Recife 31.437 47.359 0.664 0.507
## as.factor(cidade)Rio de Janeiro -22.833 47.359 -0.482 0.630
## as.factor(cidade)Salvador 41.000 47.359 0.866 0.387
## as.factor(cidade)São Paulo -29.292 47.359 -0.618 0.537
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 232 on 470 degrees of freedom
## Multiple R-squared: 0.01187, Adjusted R-squared: -0.007048
## F-statistic: 0.6275 on 9 and 470 DF, p-value: 0.7738
O resultado da regressão indicou que nenhuma cidade apresentou diferenças significativas em relação à cidade de referência (todos os p-value > 0,05). Além disso, o R² do modelo foi de apenas 1,2%, sugerindo que a cidade, isoladamente, explica muito pouco da variação observada no número de usuários de internet.
Portanto, nos dados analisados, não foram observadas diferenças significativas no número de usuários entre as cidades.
Nesse modelo de regressão linear múltipla, estou combinando a velocidade média da internet e a cidade como variáveis explicativas do número de usuários de internet.
modelo_velocidade_cidade <- lm(n_usuarios_internet ~ velocidade_media_mbps + as.factor(cidade), data = tech_filter)
summary(modelo_velocidade_cidade)##
## Call:
## lm(formula = n_usuarios_internet ~ velocidade_media_mbps + as.factor(cidade),
## data = tech_filter)
##
## Residuals:
## Min 1Q Median 3Q Max
## -682.95 -147.22 9.09 151.02 639.36
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 49959.0712 47.7272 1046.763 <2e-16 ***
## velocidade_media_mbps 0.6287 0.7025 0.895 0.371
## as.factor(cidade)Brasília 49.5187 47.4400 1.044 0.297
## as.factor(cidade)Curitiba 12.6656 47.4025 0.267 0.789
## as.factor(cidade)Fortaleza 21.1160 47.3726 0.446 0.656
## as.factor(cidade)Manaus 30.9030 47.3784 0.652 0.515
## as.factor(cidade)Porto Alegre 2.7891 47.4647 0.059 0.953
## as.factor(cidade)Recife 29.5488 47.4164 0.623 0.533
## as.factor(cidade)Rio de Janeiro -24.3331 47.3991 -0.513 0.608
## as.factor(cidade)Salvador 40.0857 47.3805 0.846 0.398
## as.factor(cidade)São Paulo -27.9602 47.3928 -0.590 0.555
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 232.1 on 469 degrees of freedom
## Multiple R-squared: 0.01356, Adjusted R-squared: -0.007475
## F-statistic: 0.6446 on 10 and 469 DF, p-value: 0.7756
O modelo apresentou um R² de apenas 1,36%, e tanto a variável velocidade média (p-value = 0,371) quanto as categorias de cidade (p-value > 0,05) não mostraram significância. O teste F para o modelo completo também não foi significativo (p-value = 0,7756).
Portanto, nem a velocidade média da internet, nem a cidade de registro, explicam de maneira significativa as variações no número de usuários de internet.
Nesse modelo de regressão linear simples, estou verificando a relação entre o número de dispositivos conectados e o número de usuários de internet nas cidades analisadas.
modelo_dispositivos <- lm(n_usuarios_internet ~ n_dispositivos_conectados, data = tech_filter)
summary(modelo_dispositivos)##
## Call:
## lm(formula = n_usuarios_internet ~ n_dispositivos_conectados,
## data = tech_filter)
##
## Residuals:
## Min 1Q Median 3Q Max
## -663.72 -148.58 5.96 142.10 672.66
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.000e+04 2.476e+01 2019.066 <2e-16 ***
## n_dispositivos_conectados 3.676e-05 4.136e-04 0.089 0.929
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 231.4 on 478 degrees of freedom
## Multiple R-squared: 1.653e-05, Adjusted R-squared: -0.002075
## F-statistic: 0.0079 on 1 and 478 DF, p-value: 0.9292
Esse modelo apresentou um coeficiente de 0,00003676 para a variável número de dispositivos conectados, com p-value de 0,929, indicando ausência de significância. O R² do modelo foi praticamente nulo (0,0016%), e o teste F para o modelo completo também não foi significativo (p-value = 0,9292). Dessa forma, isso mostra que o número de dispositivos conectados não explica de forma significativa a variação no número de usuários de internet.
Conclusão: testei velocidade, cidade e número de dispositivos, mas nenhuma variável explicou bem o número de usuários. Todos os modelos tiveram R² baixos e p-value altos. Provavelmente, existem outros fatores fora da base que influenciam mais, mas que não serão alvo deste projeto no momento.
Neste projeto, foi feita a análise dos dados de tecnologia em cidades brasileiras, tratando dados faltantes com métodos de imputação. A normalidade foi avaliada e vimos que “Número de Usuários de Internet” e “Velocidade Média” são aproximadamente normais, enquanto “Dispositivos Conectados” e “Investimento Público” não seguem distribuição normal.
As relações entre variáveis foram exploradas visualmente, mas os testes de correlação (Pearson e Spearman) não mostraram relações fortes.
A chance de uma cidade/mês do Sudeste ter velocidade média superior a 50 Mbps foi de cerca de 13%, e o teste de hipótese mostrou que a velocidade média na região é, de fato, superior a 50 Mbps.
Os testes de hipótese entre períodos (antes e depois de 2020) indicaram que não houve diferença significativa no número de usuários ao longo do tempo.
As regressões lineares mostraram que, com as variáveis disponíveis, não foi possível construir modelos fortes para explicar o número de usuários. Algumas relações fazem sentido lógico (como a relação entre número de dispositivos conectados e usuários), mas estatisticamente os modelos apresentaram baixo poder de explicação.